


import java.io.File;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.ListIterator;

import org.jdom2.Attribute;
import org.jdom2.Element;



public class CargadorEstadisticasXML implements CargadorEstadisticasXMLInterfaz {
	

	public void save(Estadistica estadistica) {
		
		XMLHandler archivoxml= new XMLHandler("estadisticas.xml");
		Element elemento=new Element("estadistica");
		
        Element elem=new Element("relevancia");
        elem.getAttributes().add(new Attribute("interesante",Integer.toString(estadistica.getTotalArticulosInteresantes())));
        elem.getAttributes().add(new Attribute("noInteresante",Integer.toString(estadistica.getTotalArticulosNoInteresantes())));
        
        elemento.addContent(elem);
        archivoxml.guardar(elemento, 1);

	}

	/**
	 * 
	 * {@inheritDoc}
	 */
	public Estadistica findEstadistica() {

		//XMLHandler archivoxml = new XMLHandler("palabras.xml");	
		XMLHandler archivoxml = new XMLHandler("estadisticas.xml");
		//Element elementoPalabra= archivoxml.cargar();
		Element elementoRaiz= null;
		try{
		elementoRaiz = archivoxml.cargar();
		} catch (Exception e){
			return null; 
		}
		
		if (elementoRaiz.getChildren().isEmpty()){
			return null;
		}
		else{
			Element elementoEstadistica = elementoRaiz.getChildren().get(0);
			Estadistica estadistica= new Estadistica();
			estadistica.setTotalArticulosInteresantes(Integer.parseInt(elementoEstadistica.getAttributeValue("interesante")));
			estadistica.setTotalArticulosNoInteresantes(Integer.parseInt(elementoEstadistica.getAttributeValue("noInteresante")));
			return estadistica;
		}
    }
	

	/**
	 * 
	 * {@inheritDoc}
	 */
	public Word findWord(String id) {
		XMLHandler archivoxml =new XMLHandler("palabras.xml");
		ListIterator<Element> iterador = archivoxml.cargar().getChildren().listIterator();
		String search= id.toLowerCase();
		Element elemento=null;
		boolean encontrado = false;
		while (iterador.hasNext() && !encontrado){
			elemento = iterador.next();
			Iterator<Attribute> it = elemento.getAttributes().listIterator();
		
			encontrado = search.equals(elemento.getAttributeValue("palabra"));
		}
		Word word = new Word();
		if (!elemento.equals(null)){
			word.setId(elemento.getAttributeValue(search));
			word.setProbabilidadNoInteresante(new BigDecimal(elemento.getAttributeValue("probNoInteresante")));
			word.setProbabilidadInteresante(new BigDecimal(elemento.getAttributeValue("probInteresante")));
		}

       return word;
	}

    /**
     * 
     * {@inheritDoc}
     */
    public void saveAll(Collection<Word> words) {

    		XMLHandler archivoxml = new XMLHandler("palabras.xml");	
    		Element elemento=new Element("palabras");
    		archivoxml.guardarElemento(elemento, 1);
    		for (Word word : words) {

    			elemento= new Element("id");
    			Attribute at0=new Attribute("palabra", word.getId().toString());
                Attribute at1=new Attribute("probInteresante", word.getProbabilidadInteresante().toString());
                Attribute at2=new Attribute("probNoInteresante", word.getProbabilidadNoInteresante().toString());
                
                elemento.getAttributes().add(at0);
                elemento.getAttributes().add(at1);
                elemento.getAttributes().add(at2);
                archivoxml.guardarElemento(elemento, archivoxml.getcantidadelementos()+1);
            }

    }

    /**
     * 
     * {@inheritDoc}
     */
	public void deleteAllWords() {

		File file=new File("palabras.xml");
		if (file.exists()){
			XMLHandler archivoxml = new XMLHandler("palabras.xml");	
			archivoxml.borrarElementos();
		} 
	}

	public void deleteAllEstadisticas() {

		File file=new File("estadisticas.xml");
		if (file.exists()){
			XMLHandler archivoxml = new XMLHandler("estadisticas.xml");	
			archivoxml.borrarElementos();
		} 
	}
	
}